<?php
// Home
define('MODULE_HOME',             'home');
define('MODULE_HOME_ACTION_VIEW', 'view');

// Login
define('MODULE_LOGIN',               'login');
define('MODULE_LOGIN_ACTION_LOGIN',  'doLogin');
define('MODULE_LOGIN_ACTION_LOGOUT', 'logout');
define('MODULE_LOGIN_ACTION_TOKEN',  'secretToken');

// Register
define('MODULE_REGISTER',                 'register');
define('MODULE_REGISTER_ACTION_REGISTER', 'register');
define('MODULE_REGISTER_ACTION_CONFIRM',  'confirm');

// Recuperar password
define('MODULE_RECUPERAR_PASSWORD',           'recuperarPassword');
define('MODULE_RECUPERAR_PASSWORD_COMPLETAR', 'completar');
define('MODULE_RECUPERAR_PASSWORD_REGENERAR', 'regenerar');

// Consultar viajes
define('MODULE_CONSULTA',                 'consulta');
define('MODULE_CONSULTA_CONSULTAR',       'consultar');
define('MODULE_CONSULTA_LISTAR_GRUPOS',   'grupos');
define('MODULE_CONSULTA_LISTAR_PUNTOS',   'listarPuntos');
define('MODULE_CONSULTA_LISTAR_TIEMPOS',  'listarTiempos');

// Mapas
define('MODULE_MAPA',                   'mapa');
define('MODULE_MAPA_CREAR_RECORRIDO',   'nuevaRuta');
define('MODULE_MAPA_EDITAR_RECORRIDO',  'editarRuta');
define('MODULE_MAPA_BORRAR_RECORRIDO',  'borrarRuta');
define('MODULE_MAPA_GUARDAR_RECORRIDO', 'guardarRuta');
define('MODULE_MAPA_LISTAR_RECORRIDOS', 'listarRutas');

// Franjas
define('MODULE_FRANJAS',                'franjas');
define('MODULE_FRANJAS_LISTAR_FRANJAS', 'verFranjas');
define('MODULE_FRANJAS_CREAR_FRANJA',   'nuevaFranja');
define('MODULE_FRANJAS_EDITAR_FRANJA',  'editarFranja');
define('MODULE_FRANJAS_BORRAR_FRANJA',  'borrarFranja');

// Conductores
define('MODULE_CONDUCTORES',                   'conductores');
define('MODULE_CONDUCTORES_LISTAR_CONDUCTOR',  'verConductores');
define('MODULE_CONDUCTORES_CREAR_CONDUCTOR',   'nuevoConductor');
define('MODULE_CONDUCTORES_EDITAR_CONDUCTOR',  'editarConductor');
define('MODULE_CONDUCTORES_BORRAR_CONDUCTOR',  'borrarConductor');

// Vehiculos
define('MODULE_VEHICULOS',                  'vehiculos');
define('MODULE_VEHICULOS_LISTAR_VEHICULOS', 'verVehiculos');
define('MODULE_VEHICULOS_CREAR_VEHICULO',   'nuevoVehiculo');
define('MODULE_VEHICULOS_EDITAR_VEHICULO',  'editarVehiculo');
define('MODULE_VEHICULOS_BORRAR_VEHICULO',  'borrarVehiculo');

// Grupos
define('MODULE_GRUPOS',               'grupos');
define('MODULE_GRUPOS_LISTAR_GRUPOS', 'verGrupos');
define('MODULE_GRUPOS_CREAR_GRUPO',   'nuevoGrupo');
define('MODULE_GRUPOS_EDITAR_GRUPO',  'editarGrupo');
define('MODULE_GRUPOS_BORRAR_GRUPO',  'borrarGrupo');

// Viajes
define('MODULE_VIAJES',                           'viajes');
define('MODULE_VIAJES_LISTAR_VIAJES',             'listarViajes');
define('MODULE_VIAJES_LISTAR_VIAJES_ACTIVOS',     'listarViajesActivos');
define('MODULE_VIAJES_LISTAR_VIAJES_FINALIZADOS', 'listarViajesFinalizados');
define('MODULE_VIAJES_CREAR_VIAJE',               'crearViaje');
define('MODULE_VIAJES_PROGRAMAR_VIAJES',          'programarViajes');
define('MODULE_VIAJES_BORRAR_VIAJE',              'borrarViaje');
define('MODULE_VIAJES_HORARIO_LLEGADA',           'horarioLlegada');
define('MODULE_VIAJES_VIAJES_A_CREAR',            'viajesACrear');

// Monitoreo
define('MODULE_MONITOREO',                   'monitoreo');
define('MODULE_MONITOREO_GEOLOCALIZACIONES', 'geolocalizaciones');
define('MODULE_MONITOREO_LISTAR_GRUPOS',     'gruposActivos');
define('MODULE_MONITOREO_MONITOREAR_GRUPO',  'monitorearGrupo');
define('MODULE_MONITOREO_MONITOREAR_VIAJE',  'monitorearViaje');

// Alertas
define('MODULE_ALERTAS',           'alertas');
define('MODULE_ALERTAS_VIAJE',     'historialViaje');
define('MODULE_ALERTAS_VEHICULO',  'historialVehiculo');
define('MODULE_ALERTAS_GRUPO',     'historialGrupo');
define('MODULE_ALERTAS_GENERALES', 'historialGeneral');

// Usuarios finales
define('MODULE_USUARIOS_FINALES',        'usuariosFinales');
define('MODULE_USUARIOS_FINALES_LISTAR', 'listarUsuariosFinales');
define('MODULE_USUARIOS_FINALES_BORRAR', 'borrarUsuariosFinales');

// Administracion de usuarios
define('MODULE_USUARIOS',                 'usuarios');
define('MODULE_USUARIOS_LISTAR_USUARIOS', 'listarUsuarios');
define('MODULE_USUARIOS_CREAR_USUARIO',   'nuevoUsuario');
define('MODULE_USUARIOS_EDITAR_USUARIO',  'editarUsuario');
define('MODULE_USUARIOS_BORRAR_USUARIO',  'borrarUsuario');
define('MODULE_USUARIOS_GET_OCR',         'getOcr');

// Administracion de roles
define('MODULE_ROLES',              'roles');
define('MODULE_ROLES_LISTAR_ROLES', 'listarRoles');
define('MODULE_ROLES_CREAR_ROL',    'crearRol');
define('MODULE_ROLES_EDITAR_ROL',   'editarRol');
define('MODULE_ROLES_BORRAR_ROL',   'borrarRol');
define('MODULE_ROLES_POR_USUARIO',  'rolesPorUsuario');
define('MODULE_ROLES_ASIGNAR_ROL',  'asignarRol');

// Administracion de acciones
define('MODULE_ACCIONES',                     'acciones');
define('MODULE_ACCIONES_LISTAR_ACCIONES',     'listar');
define('MODULE_ACCIONES_POR_USUARIO',         'porUsuario');
define('MODULE_ACCIONES_CAMBIAR_VISIBILIDAD', 'cambiarVisibilidad');

// Modules configuration class
class Modules extends BaseModules
{

    // Constructor for modules configuration
    public function __construct()
    {
        parent::__construct();
        // Load modules for this project
        $this->homeModule();
        $this->loginModule();
        $this->registerModule();
        $this->recuperarPasswordModule();
        $this->consultasModule();
        // Admin
        $this->mapaModule();
        $this->franjasModule();
        $this->vehiculosModule();
        $this->conductoresModule();
        $this->gruposModule();
        $this->viajesModule();
        $this->monitoreoModule();
        $this->alertasModule();
        $this->usuariosFinales();
        // Master
        $this->usuariosModule();
        // Seguridad
        $this->rolesModule();
        $this->accionesModule();
    }

    // Home module
    private function homeModule()
    {
        $this->setModule(MODULE_HOME, MODULE_HOME, true);
        $this->setAction(MODULE_HOME, MODULE_HOME_ACTION_VIEW, MODULE_HOME_ACTION_VIEW, true);
    }

    // Login module
    private function loginModule()
    {
        $this->setModule(MODULE_LOGIN, MODULE_LOGIN);
        $this->setAction(MODULE_LOGIN, MODULE_LOGIN_ACTION_LOGIN, MODULE_LOGIN_ACTION_LOGIN, true);
        $this->setAction(MODULE_LOGIN, MODULE_LOGIN_ACTION_LOGOUT, MODULE_LOGIN_ACTION_LOGOUT);
        $this->setAction(MODULE_LOGIN, MODULE_LOGIN_ACTION_TOKEN, MODULE_LOGIN_ACTION_TOKEN);
    }

    // Register module
    private function registerModule()
    {
        $this->setModule(MODULE_REGISTER, MODULE_REGISTER);
        $this->setAction(MODULE_REGISTER, MODULE_REGISTER_ACTION_REGISTER, MODULE_REGISTER_ACTION_REGISTER, true);
        $this->setAction(MODULE_REGISTER, MODULE_REGISTER_ACTION_CONFIRM, MODULE_REGISTER_ACTION_CONFIRM);
    }

    // Recuperar Password module
    private function recuperarPasswordModule()
    {
        $this->setModule(MODULE_RECUPERAR_PASSWORD, MODULE_RECUPERAR_PASSWORD);
        $this->setAction(MODULE_RECUPERAR_PASSWORD, MODULE_RECUPERAR_PASSWORD_COMPLETAR, MODULE_RECUPERAR_PASSWORD_COMPLETAR, true);
        $this->setAction(MODULE_RECUPERAR_PASSWORD, MODULE_RECUPERAR_PASSWORD_REGENERAR, MODULE_RECUPERAR_PASSWORD_REGENERAR);
    }

    // Consultas module
    private function consultasModule()
    {
        $this->setModule(MODULE_CONSULTA, MODULE_CONSULTA);
        $this->setAction(MODULE_CONSULTA, MODULE_CONSULTA_CONSULTAR, MODULE_CONSULTA_CONSULTAR, true);
        $this->setAction(MODULE_CONSULTA, MODULE_CONSULTA_LISTAR_GRUPOS, MODULE_CONSULTA_LISTAR_GRUPOS);
        $this->setAction(MODULE_CONSULTA, MODULE_CONSULTA_LISTAR_PUNTOS, MODULE_CONSULTA_LISTAR_PUNTOS);
        $this->setAction(MODULE_CONSULTA, MODULE_CONSULTA_LISTAR_TIEMPOS, MODULE_CONSULTA_LISTAR_TIEMPOS);
    }

    // Mapa module
    private function mapaModule()
    {
        $this->setModule(MODULE_MAPA, MODULE_MAPA);
        $this->setAction(MODULE_MAPA, MODULE_MAPA_LISTAR_RECORRIDOS, MODULE_MAPA_LISTAR_RECORRIDOS, true);
        $this->setAction(MODULE_MAPA, MODULE_MAPA_CREAR_RECORRIDO, MODULE_MAPA_CREAR_RECORRIDO);
        $this->setAction(MODULE_MAPA, MODULE_MAPA_GUARDAR_RECORRIDO, MODULE_MAPA_GUARDAR_RECORRIDO);
        $this->setAction(MODULE_MAPA, MODULE_MAPA_EDITAR_RECORRIDO, MODULE_MAPA_EDITAR_RECORRIDO);
        $this->setAction(MODULE_MAPA, MODULE_MAPA_BORRAR_RECORRIDO, MODULE_MAPA_BORRAR_RECORRIDO);
    }

    // Franjas module
    private function franjasModule()
    {
        $this->setModule(MODULE_FRANJAS, MODULE_FRANJAS);
        $this->setAction(MODULE_FRANJAS, MODULE_FRANJAS_LISTAR_FRANJAS, MODULE_FRANJAS_LISTAR_FRANJAS, true);
        $this->setAction(MODULE_FRANJAS, MODULE_FRANJAS_CREAR_FRANJA, MODULE_FRANJAS_CREAR_FRANJA);
        $this->setAction(MODULE_FRANJAS, MODULE_FRANJAS_EDITAR_FRANJA, MODULE_FRANJAS_EDITAR_FRANJA);
        $this->setAction(MODULE_FRANJAS, MODULE_FRANJAS_BORRAR_FRANJA, MODULE_FRANJAS_BORRAR_FRANJA);
    }

    // Conductores module
    private function conductoresModule()
    {
        $this->setModule(MODULE_CONDUCTORES, MODULE_FRANJAS);
        $this->setAction(MODULE_CONDUCTORES, MODULE_CONDUCTORES_LISTAR_CONDUCTOR, MODULE_CONDUCTORES_LISTAR_CONDUCTOR, true);
        $this->setAction(MODULE_CONDUCTORES, MODULE_CONDUCTORES_CREAR_CONDUCTOR, MODULE_CONDUCTORES_CREAR_CONDUCTOR);
        $this->setAction(MODULE_CONDUCTORES, MODULE_CONDUCTORES_EDITAR_CONDUCTOR, MODULE_CONDUCTORES_EDITAR_CONDUCTOR);
        $this->setAction(MODULE_CONDUCTORES, MODULE_CONDUCTORES_BORRAR_CONDUCTOR, MODULE_CONDUCTORES_BORRAR_CONDUCTOR);
    }

    // Vehiculos module
    private function vehiculosModule()
    {
        $this->setModule(MODULE_VEHICULOS, MODULE_VEHICULOS);
        $this->setAction(MODULE_VEHICULOS, MODULE_VEHICULOS_LISTAR_VEHICULOS, MODULE_VEHICULOS_LISTAR_VEHICULOS, true);
        $this->setAction(MODULE_VEHICULOS, MODULE_VEHICULOS_CREAR_VEHICULO, MODULE_VEHICULOS_CREAR_VEHICULO);
        $this->setAction(MODULE_VEHICULOS, MODULE_VEHICULOS_EDITAR_VEHICULO, MODULE_VEHICULOS_EDITAR_VEHICULO);
        $this->setAction(MODULE_VEHICULOS, MODULE_VEHICULOS_BORRAR_VEHICULO, MODULE_VEHICULOS_BORRAR_VEHICULO);
    }

    // Grupos module
    private function gruposModule()
    {
        $this->setModule(MODULE_GRUPOS, MODULE_GRUPOS);
        $this->setAction(MODULE_GRUPOS, MODULE_GRUPOS_LISTAR_GRUPOS, MODULE_GRUPOS_LISTAR_GRUPOS, true);
        $this->setAction(MODULE_GRUPOS, MODULE_GRUPOS_CREAR_GRUPO, MODULE_GRUPOS_CREAR_GRUPO);
        $this->setAction(MODULE_GRUPOS, MODULE_GRUPOS_EDITAR_GRUPO, MODULE_GRUPOS_EDITAR_GRUPO);
        $this->setAction(MODULE_GRUPOS, MODULE_GRUPOS_BORRAR_GRUPO, MODULE_GRUPOS_BORRAR_GRUPO);
    }

    // Viajes Module
    private function viajesModule()
    {
        $this->setModule(MODULE_VIAJES, MODULE_VIAJES);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES, MODULE_VIAJES_LISTAR_VIAJES, true);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_ACTIVOS, MODULE_VIAJES_LISTAR_VIAJES_ACTIVOS);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_LISTAR_VIAJES_FINALIZADOS, MODULE_VIAJES_LISTAR_VIAJES_FINALIZADOS);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_CREAR_VIAJE, MODULE_VIAJES_CREAR_VIAJE);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_PROGRAMAR_VIAJES, MODULE_VIAJES_PROGRAMAR_VIAJES);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_BORRAR_VIAJE, MODULE_VIAJES_BORRAR_VIAJE);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_HORARIO_LLEGADA, MODULE_VIAJES_HORARIO_LLEGADA);
        $this->setAction(MODULE_VIAJES, MODULE_VIAJES_VIAJES_A_CREAR, MODULE_VIAJES_VIAJES_A_CREAR);
    }

    // Monitoreo Module
    private function monitoreoModule()
    {
        $this->setModule(MODULE_MONITOREO, MODULE_MONITOREO);
        $this->setAction(MODULE_MONITOREO, MODULE_MONITOREO_LISTAR_GRUPOS, MODULE_MONITOREO_LISTAR_GRUPOS, true);
        $this->setAction(MODULE_MONITOREO, MODULE_MONITOREO_MONITOREAR_GRUPO, MODULE_MONITOREO_MONITOREAR_GRUPO);
        $this->setAction(MODULE_MONITOREO, MODULE_MONITOREO_MONITOREAR_VIAJE, MODULE_MONITOREO_MONITOREAR_VIAJE);
        $this->setAction(MODULE_MONITOREO, MODULE_MONITOREO_GEOLOCALIZACIONES, MODULE_MONITOREO_GEOLOCALIZACIONES);
    }

    // Alertas module
    private function alertasModule()
    {
        $this->setModule(MODULE_ALERTAS, MODULE_ALERTAS);
        $this->setAction(MODULE_ALERTAS, MODULE_ALERTAS_GENERALES, MODULE_ALERTAS_GENERALES, true);
        $this->setAction(MODULE_ALERTAS, MODULE_ALERTAS_VIAJE, MODULE_ALERTAS_VIAJE);
        $this->setAction(MODULE_ALERTAS, MODULE_ALERTAS_VEHICULO, MODULE_ALERTAS_VEHICULO);
        $this->setAction(MODULE_ALERTAS, MODULE_ALERTAS_GRUPO, MODULE_ALERTAS_GRUPO);
    }

    // Usuarios finales module
    private function usuariosFinales()
    {
        $this->setModule(MODULE_USUARIOS_FINALES, MODULE_USUARIOS_FINALES);
        $this->setAction(MODULE_USUARIOS_FINALES, MODULE_USUARIOS_FINALES_LISTAR, MODULE_USUARIOS_FINALES_LISTAR, true);
        $this->setAction(MODULE_USUARIOS_FINALES, MODULE_USUARIOS_FINALES_BORRAR, MODULE_USUARIOS_FINALES_BORRAR);
    }

    // Usuarios Module
    private function usuariosModule()
    {
        $this->setModule(MODULE_USUARIOS, MODULE_USUARIOS);
        $this->setAction(MODULE_USUARIOS, MODULE_USUARIOS_LISTAR_USUARIOS, MODULE_USUARIOS_LISTAR_USUARIOS, true);
        $this->setAction(MODULE_USUARIOS, MODULE_USUARIOS_CREAR_USUARIO, MODULE_USUARIOS_CREAR_USUARIO);
        $this->setAction(MODULE_USUARIOS, MODULE_USUARIOS_EDITAR_USUARIO, MODULE_USUARIOS_EDITAR_USUARIO);
        $this->setAction(MODULE_USUARIOS, MODULE_USUARIOS_BORRAR_USUARIO, MODULE_USUARIOS_BORRAR_USUARIO);
        $this->setAction(MODULE_USUARIOS, MODULE_USUARIOS_GET_OCR, MODULE_USUARIOS_GET_OCR);
    }

    // Roles module
    private function rolesModule()
    {
        $this->setModule(MODULE_ROLES, MODULE_ROLES);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_LISTAR_ROLES, MODULE_ROLES_LISTAR_ROLES, true);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_CREAR_ROL, MODULE_ROLES_CREAR_ROL);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_EDITAR_ROL, MODULE_ROLES_EDITAR_ROL);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_BORRAR_ROL, MODULE_ROLES_BORRAR_ROL);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_POR_USUARIO, MODULE_ROLES_POR_USUARIO);
        $this->setAction(MODULE_ROLES, MODULE_ROLES_ASIGNAR_ROL, MODULE_ROLES_ASIGNAR_ROL);
    }

    // Acciones module
    private function accionesModule()
    {
        $this->setModule(MODULE_ACCIONES, MODULE_ACCIONES);
        $this->setAction(MODULE_ACCIONES, MODULE_ACCIONES_LISTAR_ACCIONES, MODULE_ACCIONES_LISTAR_ACCIONES, true);
        $this->setAction(MODULE_ACCIONES, MODULE_ACCIONES_POR_USUARIO, MODULE_ACCIONES_POR_USUARIO);
        $this->setAction(MODULE_ACCIONES, MODULE_ACCIONES_CAMBIAR_VISIBILIDAD, MODULE_ACCIONES_CAMBIAR_VISIBILIDAD);
    }

}
?>